﻿/*=============================================================================
* File Name : Collision.h                          Ver : 1.00  Date : 2009-12-22
*
* Description :
*
*       衝突判定計算クラス.
*
* Author : yuuki tsuchida.
*============================================================================*/
#ifndef _COLLISION_H_
#define _COLLISION_H_

//#include

namespace tglib
{

struct Rect;

class Vector2;
class Vector3;
class Line3;

/**
 * @brief 衝突判定計算クラス．
 */
class Collision
{
public:
	/*===========================================================================*/
	/**
	 * 点と矩形の衝突判定．
	 *
	 * @param [in] point 点．
	 * @param [in] rect2 矩形．
	 * @return   衝突していればtrue、そうでないならfalse．
	 */
	static bool pointAndRect( const Vector2& point, const Rect& rect );

	/*===========================================================================*/
	/**
	 * 矩形と矩形の衝突判定．
	 *
	 * @param [in] rect1 矩形1．
	 * @param [in] rect2 矩形2．
	 * @return   衝突していればtrue、そうでないならfalse．
	 */
	static bool rectAndRect( const Rect& rect1, const Rect& rect2 );

	/*===========================================================================*/
	/**
	 * 球と球の衝突判定．
	 *
	 * @param [in]  center1 球体1の中心点．
	 * @param [in]  radius1 球体1の半径．
	 * @param [in]  center2 球体2の中心点．
	 * @param [in]  radius2 球体2の半径．
	 * @return   衝突していればtrue、そうでないならfalse．
	 */
	static bool sphereAndSphere( const Vector3& center1, float radius1, const Vector3& center2, float radius2 );

	/*===========================================================================*/
	/**
	 * 線分と線分の衝突判定．
	 *
	 * @param [in]  line1 ライン１．
	 * @param [in]  line2 ライン２．
	 * @return   衝突していればtrue、そうでないならfalse．
	 */
	static bool lineAndLine( Line3& line1, Line3& line2 );

	/*===========================================================================*/
	/**
	 * 線分と点の衝突判定．
	 *
	 * @param [in]  line  ライン．
	 * @param [in]  point 点の座標．
	 * @return   衝突していればtrue、そうでないならfalse．
	 */
	static bool lineAndPoint( const Line3& line, const Vector3& point );

private:
	/*===========================================================================*/
	/**
	 * コンストラクタ．
	 */
	Collision();
};

} // namespace tglib

#endif

/*========= End of File =====================================================*/
